我有一个简单的Ruby脚本,看起来像这样require'csv'whileline=STDIN.getsarray=CSV.parse_line(line)putsarray[2]end但是当我尝试在这样的Unix管道中使用此脚本时,我得到10行输出,然后是一个错误:rubylib/myscript.rb(Errno::EPIPE)有没有一种方法可以以防止引发破损管道异常的方式编写Ruby脚本? 最佳答案 head在读取所有需要的数据后关闭标准输出流。您应该处理异常并停止写入标准输出。一旦标准输出关闭,以下代码将中止循环:while
我需要将fixnums转换为字符串。我的解决方案是:arr.map{|a|a.to_s}有没有更好的办法? 最佳答案 arr.map(&:to_s)这使用了Ruby>=1.8.7中的一个漂亮的新特性,"symboltoproc"shortcut,相当于您问题中的代码。 关于ruby-使用Ruby,如何将所有数组值转换为给定类型?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/43
使用Ruby...给定以下字符串:x="blah_blah.do.dah[4543]junk_junk"如何删除最后一个数字/数字后的所有文本?我认为最简单的方法可能是找到最后一次出现的索引,然后删除该索引之后的所有内容。但是,我似乎无法弄清楚如何获得该索引。我所有使用正则表达式的尝试都失败了。 最佳答案 有答案如何做你需要的还要找到最后一次出现的数字:x='blah_blah.do.dah[4543]junk_junk'x.rindex(/\d/) 关于ruby-如何使用Ruby查找字
我有一个对象,它具有name和data等属性。我想创建一个哈希,它使用名称作为键,数据(它是一个数组)作为值。我不知道如何使用map来减少下面的代码。可能吗?deffc_hashfcs=Hash.newself.forecasts.eachdo|fc|fcs[fc.name]=fc.dataendfcsend 最佳答案 使用Hash[]:Forecast=Struct.new(:name,:data)forecasts=[Forecast.new('bob',1),Forecast.new('mary',2)]Hash[foreca
在ruby1.9.2-rc1rails3beta4中执行以下代码时,出现以下错误:SystemStackError:stackleveltoodeep/:ruby-1.9.2-rc1>f=Forum.all.first=>#ruby-1.9.2-rc1>f.children=>[#]ruby-1.9.2-rc1>f.forum_type="thread"=>"thread"ruby-1.9.2-rc1>f.saveSystemStackError:stackleveltoodeepfrom/Users/emilkampp/.rvm/rubies/ruby-1.9.2-rc1/lib/r
想要打乱一个字符串。这是我的代码:这有什么不对?谢谢。>>defstring_shuffle(s)>>s.split('').shuffle(s.length()).join>>returns>>end 最佳答案 如果你理解正确,你想要这个:defstring_shuffle(s)s.split("").shuffle.joinendstring_shuffle("TheRubylanguage")=>"eagubgTayehRlnu" 关于ruby-Ruby新手-如何随机排列字符串?,
我正在尝试解密由另一个使用Java的BouncyCaSTLe库的程序加密的数字。在Java中,我可以这样设置key:key=Hex.decode("5F3B603AFCE22359");我正在尝试找出如何在Ruby中表示相同的步骤。 最佳答案 要获取整数—只需str.hex。您可以通过多种方式获取字节数组:str.scan(/../).map(&:hex)[str].pack('H*').unpack('C*')[str].pack('H*').bytes.to_a参见otheroptionsforpack/unpack和examp
我有一个数组,还有一个数组,其中包含第一个数组中某些元素的索引。从第一个数组中获取元素的最佳方法是什么?我在做:result=[]indexes.each{|current|result但应该有更好的方法.. 最佳答案 您可以使用Array#map:indexes.map{|i|my_array[i]}或者更好,Array#values_atmy_array.values_at(*indexes)*符号将数组提取到传递给方法的参数中。 关于Ruby通过索引访问多个数组元素(子数组),我们
我想将两个数组“压缩”成一个哈希。来自:['BO','BR']['BOLIVIA','BRAZIL']收件人:{BO:'BOLIVIA',BR:'BRAZIL'}我该怎么做? 最佳答案 我会这样做:keys=['BO','BR']values=['BOLIVIA','BRAZIL']Hash[keys.zip(values)]#=>{"BO"=>"BOLIVIA","BR"=>"BRAZIL"}如果你想要键的符号,那么:Hash[keys.map(&:to_sym).zip(values)]#=>{:BO=>"BOLIVIA",:B
这个问题在这里已经有了答案:CheckifanarrayissubsetofanotherarrayinRuby(4个答案)关闭6年前。假设我有以下Ruby代码:array_1=['a','b']array_2=['a','b','c']some_function(array_1,array_2)#=>Truesome_function(array_2,array_1)#=>Falsesome_function(['a','b'],['a','d'])#=>Falsesome_function(['x','y'],array_2)#=>False我非常期待some_function在参